System and method for servicing requests to a storage array

ABSTRACT

According to the method of the present invention, if a data read request to an unavailable particular storage medium is received from a system processor, a request servicing circuit of an adapter reconstructs the request data from data and parity data stored on other storage media in the array. However, if a data write request to an unavailable storage medium is received from the system processor, the actual data related to the data write request is stored in a temporary memory location, and the data write request is logged in a non-volatile memory. There is no built-in data redundancy in a first preferred embodiment of the present invention; thus, modified data is lost in the event of the failure of another storage medium during the update of the selected storage medium. However, a second preferred embodiment of the present invention incorporates a spare storage medium that preserves the modified data if another storage medium fails.

BACKGROUND OF THE INVENTION

[0001] 1. Technical Field

[0002] The present invention relates in general to data processingsystems, and more particularly, data storage within data processingsystems. Still more particularly, the present invention relates to asystem and method for handling data requests within data processingsystems.

[0003] 2. Description of the Related Art

[0004] In modern computer systems, users frequently access common datastored in a redundant array of inexpensive disks (RAID) of a centralnetworked computer. Redundancy is employed so that if a hard disk of theRAID fails, the data stored on the failed hard disk can be rebuiltutilizing data and parity data stored on the other hard disks of theRAID while the failed hard disk is taken off-line and repaired.

[0005] Hard disks within a RAID frequently are subject to numerousaccesses ranging from relatively short data writes or reads torelatively lengthy updates of the configuration of the hard disk. Duringaccess to a disk, one or more users of the computer system may be unableto access the data on the disk. Such users typically wait until the harddisk completes the previous process until their data access requests canbe fulfilled.

[0006] An example of a lengthy hard disk update that would restrict useraccess to data is a firmware update. Firmware updates may be required,for example, to resolve incompatibilities between components (e.g., harddisks) or to correct errors in the firmware that are not detected untilafter the release of the firmware.

[0007] An update to the firmware of a conventional hard disk cannot beperformed when the drive is on-line. Because of this limitation, harddisk firmware updates are performed in a controlled operating systemenvironment with the selected hard disk set to an off-line mode toprevent access to the hard disk. Utilizing a single threaded environment(e.g., disk operating system, or DOS) allows a hard disk firmware updateapplication to assume control of the computer system and prevent otherapplications from accessing the hard disk during the firmware update.

[0008] Because many computer systems and networks employ multi-threadedoperating systems (e.g., Windows NT), to perform a firmware update, anadministrator typically shuts down the multi-threaded operating system,takes the computer system off-line, boots DOS, runs the hard disk updatesoftware, and waits for the update to complete. During the firmwareupdate, the RAID is taken off-line, which prevents other users fromaccessing the data stored on the RAID.

[0009] Thus, it is often the case that users may request access to datastored on a hard disk that is unavailable due to an update, repair, oranother access. The present invention recognizes that a system andmethod for servicing a data request to an unavailable hard disk withoutwaiting for the update, access, or repair to be completed, would improvethe overall of a data processing system.

SUMMARY OF THE INVENTION

[0010] To overcome the foregoing and additional limitations of the priorart, the present invention presents an improved system and method ofservicing a data request to a storage media array. In accordance with apreferred embodiment of the present invention, the data processingsystem includes an adapter and a redundant array of inexpensive disks(RAID). The adapter includes an updating circuit and a request servicingcircuit.

[0011] According to the method of the present invention, if a data readrequest to an unavailable particular storage medium is received from asystem processor, a request servicing circuit of an adapter reconstructsthe request data from data and parity data stored on other storage mediain the array. However, if a data write request to an unavailable storagemedium is received from the system processor, the actual data related tothe data write request is stored in a temporary memory location, and thedata write request is logged in a non-volatile memory. There is nobuilt-in data redundancy in a first preferred embodiment of the presentinvention; thus, modified data is lost in the event of the failure ofanother storage medium during the update of the selected storage medium.However, a second preferred embodiment of the present inventionincorporates a spare storage medium that preserves the modified data ifanother storage medium fails.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The novel features believed characteristic of the invention areset forth in the appended claims. The invention itself however, as wellas a preferred mode of use, further objects and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

[0013]FIG. 1 depicts a detailed block diagram of an exemplary dataprocessing system, which may be utilized to implement the presentinvention;

[0014]FIG. 2 illustrates a detailed block diagram of an adapter for astorage array in accordance with a preferred embodiment of the presentinvention;

[0015]FIG. 3A depicts a high-level logic flowchart illustrating a firstmethod for servicing a data request to a storage array according to apreferred embodiment of the present invention;

[0016]FIG. 3B illustrates a table depicting a redundant array ofinexpensive disks (RAID) implementing a first method of servicing a datarequest to a storage array according to a preferred embodiment of thepresent invention;

[0017]FIG. 4A depicts a high-level logic flowchart illustrating a secondmethod for servicing a data request to a storage array including a sparestorage medium according to a preferred embodiment of the presentinvention; and

[0018]FIG. 4B illustrates a table depicting a RAID implementing a secondmethod of servicing a data request to a storage array according to apreferred embodiment of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT

[0019] With reference now to the figures and in particular withreference to FIG. 1, there is depicted a detailed block diagram of adata processing system 10 in which a preferred embodiment of the presentinvention may be implemented. As illustrated, data processing system 10includes a system processor 12, a system memory 14, a user interface 17,and a communications control unit 19, all coupled via a systeminterconnect 16. System processor 12, which may be implemented as one ormore processors, such as any generation of Pentium™ processor availablefrom Intel Corporation in Santa Clara, Calif., executes softwareinstructions to control the operation of data processing system 10.System memory 14 provides storage for software and data and may includeboth read-only memory (ROM) and random access memory (RAM).

[0020] It should be readily apparent to those skilled in the art thatsystem interconnect 16 may be implemented as a bus, a switch or anyother type of coupling apparatus. User interface 17 provides aninterface between data processing system 10 and peripherals employed bya user to interact with data processing system 10. User interface 17 mayinclude various adapters and drivers for controlling peripherals, suchas keyboard 28, display 30, and mouse 32. Communications control unit 19provides an interface between data processing system 10 and an externalnetwork 26, which may be a local area network (LAN) or a wide areanetwork (WAN) such as the Internet.

[0021] An adapter 22 controls access and updates to a storage mediaarray 23 via an array interconnect 25 and is coupled to system processor12 by a mezzanine interconnect 18, which in a preferred embodiment ofthe present invention may be implemented as a peripheral componentinterconnect (PCI) bus. Array interconnect 25 can be implemented as asmall computer system interface (SCSI) bus. It should be readilyapparent to those skilled in the art that any interconnect system (e.g.,integrated device electronics, or IDE) may be implemented to couplestorage media array 23 to system processor 12. Storage media array 23can be implemented as a redundant array of inexpensive disks (RAID) 24a-24 n.

[0022] Referring now to FIG. 2, a detailed block diagram is illustratedof an adapter 22 utilized by a data processing system 10, as depicted inFIG. 1, according to a preferred embodiment of the present invention.Adapter 22 coordinates updates and services data requests to storagemedia array 23 by system processor 12 or by other networked dataprocessing systems coupled to data processing system 10.

[0023] As depicted, adapter 22 includes an adapter processor 104 that isimplemented as an updating circuit for coordinating accesses and updatesto storage media array 23. Coupled to adapter processor 104 via anadapter interconnect 102 is an adapter processor memory 106, whichfunctions as a cache memory for adapter processor 104.

[0024] Further coupled to adapter processor 104 is non-volatile randomaccess memory (NVRAM) 108. During an update to a selected storage mediumof storage media array 23, adapter 22 receives a data write request fromsystem processor 12. NVRAM 108 logs the data write request as a “dirtystripe”, or a stripe of modified data. The actual data from the datawrite request are stored in another storage medium in the array.Requests for data during an update to the storage medium of storagemedia array 23 are handled by a request servicing circuit, implementedas an exclusive-OR (XOR) processor 112, coupled by adapter interconnect102.

[0025] Adapter 22 finally includes PCI/PCI bridge 114, and smallcomputer system interface (SCSI) channels 116 to facilitate datacommunication between system PCI bus 18 and SCSI bus 25.

[0026] With reference now to FIG. 3A, there is illustrated a high-levellogic flowchart depicting an exemplary method by which an adapter 22services a request to access a storage media array 23 according to afirst embodiment of the present invention. In FIG. 3B, there is depicteda table that illustrates an exemplary RAID that stores data in stripesacross three storage media.

[0027] As depicted in FIG. 3A, the method begins at block 200 and thencontinues to an update loop including blocks 202, 204, and 206. Duringthe execution of the update loop, an adapter processor 104 (or othersuitable updating circuit) selects a storage medium to update out ofstorage media array 23, as shown in block 202. In this example, adapter22 selects storage medium 2 for updating, as depicted in FIG. 3B. Asillustrated in block 204, adapter processor 104 sets the storage medium2 to an off-line status, and begins relaying update data (e.g., updatedfirmware) to storage medium 2, as depicted in block 206.

[0028] The process then enters a request servicing loop that includesblocks 208, 210, 212, 213, 214, 216, 218 and 220. The request servicingloop illustrates the process of providing a user with requested datathat is located on a selected, inaccessible storage medium. In thisexample, as depicted in FIG. 3B, storage medium 2 is inaccessible atthis time because adapter 22 had been instructed by system processor 12to perform an update to storage medium 2.

[0029] During the update of storage medium 2, adapter 22 monitors fordata requests to the selected storage medium, as shown in block 208. Ifadapter 22 monitors a data request to the selected storage medium andthe data request is a data read request (e.g., a data read request fordata D1 of FIG. 3B), as depicted in block 210, the requested data D1 areautomatically reconstructed by a request servicing circuit, implementedas a XOR processor 112, utilizing data D0 and parity data P1 stored inother storage media in the array, as shown in block 212. The requestservicing circuit provides the requested data to the requestingcomponent, as depicted in block 213. The process then returns from block213 to block 208.

[0030] If the data request is not a data read request, the data requestis assumed to be a data write request, as illustrated in block 214. Thedata write request and the location of the data related to the datawrite request are logged within NVRAM 108, and the actual datacorresponding to the data write request are stored another storagemedium in the array, as depicted in blocks 216 and 218. The process thenreturns from block 218 to block 208, where the process monitors for datarequests to storage media 2, as illustrated.

[0031] If adapter 22 does not receive a data request to the selectedstorage medium, the process moves from block 208 to block 220, whichdepicts a determination of whether or not the update of the selectedstorage medium is complete. If the update of the selected storage mediumis not complete, the process returns from block 220 to block 208 whereadapter 22 continues to monitor for a data request to the selectedstorage medium.

[0032] If the update of the selected storage medium is complete, theprocess continues to block 222, where each dirty stripe logged in NVRAMis rebuilt with data and parity data stored on other the storage mediain the storage media array, and the new data stored in the temporarylocation in the other storage media. The selected storage medium is thenset to an online status by adapter 22, as depicted in block 224.Finally, if there are remaining storage media to be updated, the processreturns from block 226 to block 202, where the process reenters theupdate loop. If there are no remaining storage media to be updated, theprocess ends, as shown in block 228.

[0033] One drawback to the method outlined by a preferred firstembodiment of the present invention, as depicted in FIGS. 3A and 3B, isthe lack of redundancy in the system. If another storage medium (storagemedia 1 or 3, as illustrated in FIG. 3B) fails during the update ofstorage medium 2, the entire storage media array 23 is taken off-line.The failed storage medium (storage media 1 or 3) is repaired and thenrebuilt utilizing data and parity data from the other two storage media.However, any modified data for storage medium 2 temporarily stored onthe failed storage medium during the update are lost.

[0034] Referring to FIG. 4A, a high-level logic flowchart depicting anexemplary method by which an adapter 22 services a request to access astorage media array according to a second embodiment of the presentinvention. Illustrated in FIG. 4B, there is depicted an exemplary RAIDthat stores data in stripes across four storage media. Included instorage media array 23 is a spare storage medium for storing data andwrite data requests during a selected storage medium update controlledby adapter 22.

[0035] As depicted, the method begins at block 300 and then continues toblock 302, which is illustrated as an update loop including blocks 302,304 and 306. The update loop depicts the selection and update of astorage medium. During the execution of the update loop, an adapterprocessor 104, implemented as an updating circuit, selects a storagemedium to update out of a storage media array 23, as shown in block 302.In this example, according to FIG. 4B, adapter 22 selects storage medium2 for updating. As illustrated in block 304, adapter processor 104 setsstorage medium 2 to an off-line status, and begins relaying update datato storage medium 2, as depicted in block 306.

[0036] The process then enters a request servicing loop that includesblocks 308, 310, 312, 313, 314, 316, 318 and 320. The request servicingloop illustrates the process of providing a user with requested datathat is located on a selected, inaccessible storage medium. The selectedstorage medium is inaccessible at this time because adapter 22 had beeninstructed by system processor 12 to perform an update on storage medium2.

[0037] During the update of storage medium 2, adapter 22 monitors fordata requests to storage medium 2, as shown in block 308. For example,according to FIG. 4B, if adapter 22 monitors a data request determinedto be a data read request for data D1 to storage medium 2, as depictedin block 310, the requested data D1 is automatically reconstructed byXOR processor 112, (or other request servicing circuit), from data D0and parity data P1 stored in other storage media (e.g., storage media 1and 3) in the array, as shown in block 312. The request servicingcircuit provides the requested data to the requesting component, asdepicted in block 313. The process then returns from block 313 to block308. If the data request is not a data read request, the data request isassumed to be a data write request to storage medium 2, as illustratedin block 314. The data write request is logged within a NVRAM 108 and aspare storage medium 4, as illustrated in block 316. The actual data D1associated with the data write request is stored in the spare storagemedium, as data D1′, as depicted in block 318. The process then returnsto block 308 from block 318.

[0038] If adapter 22 does not receive a data request to the selectedstorage medium, the process moves to block 320, which depicts adetermination of whether or not the update to the selected storagemedium is complete. If the update of storage medium 2 is complete, theprocess continues to block 322, where each dirty stripe logged in NVRAMis rebuilt with data and parity data stored in the other storage mediain the array and the new data stored in spare storage medium 4; asillustrated, storage medium 2 is set to an online status by adapter 22,as depicted in block 324. Finally, if there are remaining storage mediato be updated, the process returns from block 326 to block 302, wherethe process reenters the update loop. If there are no remaining storagemedia to be updated, the process ends, as shown in block 328.

[0039] If the update of storage medium 2 is not complete, the processcontinues to block 330, which illustrates adapter 22 checking if anotherstorage medium of the array has failed. If another storage medium of thearray has failed, storage media array 23 is set to off-line status byadapter 22, as shown in block 332. The update of storage medium 2 iscompleted, as depicted in block 334, and storage medium 2 is rebuiltwith data and parity data stored in other storage media, and new datastored in the spare storage medium 4, as illustrated in block 336. Theprocess then continues to block 324. If another storage medium of thearray has not failed, the process returns from block 330 to block 308.

[0040] This second preferred embodiment of the present inventionaddresses the drawback of the first embodiment. As illustrated in FIG.4B, spare storage medium 4 records the modified data to be transferredto storage medium 2 when the update is complete. Therefore, if one ofthe other storage media fails during the update of storage medium 2, themodified data are preserved on spare storage medium 4.

[0041] As described above, an improved system and method of servicing arequest to an array of storage media is presented. A data processingsystem, according to a preferred embodiment of the present inventionincludes a storage media array and an adapter to interface with thestorage media array. If a data read request to a particular storagemedium is received from a system processor, a request servicing circuitof the adapter reconstructs the request data from data and parity datastored on other storage media in the array. However, if a data writerequest to an unavailable storage medium is received from the systemprocessor, the actual data related to the data write request are storedin a temporary memory location, and the data write request is logged ina non-volatile random access memory (NVRAM). There is no built-in dataredundancy in a first preferred embodiment of the present invention;thus, modified data are lost in the event of the failure of anotherstorage medium during the update of the selected storage medium.However, a second preferred embodiment of the present inventionincorporates a spare storage medium that preserves the modified data ifanother storage medium fails.

[0042] While the invention has been particularly shown and describedwith reference to a preferred embodiment, it will be understood by thoseskilled in the art that various changes in form and detail may be madetherein without departing from the spirit and scope of the invention.For example, the data on a storage medium in a RAID utilizing thepresent invention may still be accessed by a user even if the storagemedium is off-line due to required maintenance.

What is claimed is:
 1. A method of servicing a request to a redundantstorage array including a plurality of storage media containing data andrelated parity data, said method comprising: receiving a data requestfor data stored by a selected storage medium among said plurality ofstorage media; and in response to receiving said data request while anupdate to said selected storage medium is being performed, servicingsaid data request by reference to said data and said related parity dataof other storage media among said plurality of storage media.
 2. Themethod according to claim 1, said step of servicing further including:automatically reconstructing requested data utilizing said data andrelated parity data from said other storage media; and outputting saidreconstructed requested data.
 3. The method according to claim 2, saidstep of automatically reconstructing further including: determining atype of said data request; and automatically reconstructing requesteddata utilizing said data and said related parity data only in responseto determining that said data request is a data read request.
 4. Themethod according to claim 3, said step of determining furthercomprising: in response to determining that said data request is a datawrite request, logging said data write request; storing new data forsaid data write request; setting said particular storage medium to arebuild status; rebuilding said particular storage medium utilizing saiddata and related parity data from said other storage media; and settingsaid particular storage medium to online status.
 5. The method accordingto claim 1, wherein said particular storage medium is a disk, and saidredundant storage array is a redundant disk array and wherein: receivinga data request for data stored by a particular storage medium comprisesreceiving a data request for data stored by a particular disk of saidredundant disk array.
 6. An adapter for use with a data processingsystem including a redundant storage array including a plurality ofstorage media containing data and related parity data, said adaptercomprising: an updating circuit for receiving a data request for datastored by a selected storage medium among said plurality of storagemedia; and a request servicing circuit, in response to receiving saiddata request while an update to said selected storage medium is beingperformed, for servicing said data request by reference to said data andsaid related parity data of other storage media among said plurality ofstorage media.
 7. The adapter according to claim 6, wherein saidupdating circuit is an adapter a processor.
 8. The adapter according toclaim 6, wherein said request servicing circuit is an exclusive-OR (XOR)processor for automatically reconstructing requested data utilizing dataand related parity data from other storage media during said updating,in response to a data request by said system processor, said XORprocessor coupled to an adapter processor.
 9. The adapter according toclaim 6, further including: a non-volatile random access memory (NVRAM)for logging data write requests.
 10. The adapter according to claim 6,further comprising: a storage location for temporarily storing writedata for said selected storage media during said updating.
 11. Theadapter according to claim 10, wherein said storage location is anadapter cache.
 12. The adapter according to claim 11, wherein saidadapter cache further includes: a battery-backup circuit, for preservingdata stored on said adapter cache.
 13. The adapter according the claim8, wherein said data request is a data read request.
 14. A disk systemcomprising: an adapter according to claim 6; and a redundant storagearray.
 15. The adapter according to claim 6, wherein said redundantstorage array is a redundant array of inexpensive disks (RAID).
 16. Adata processing system, comprising: a system processor; a system memorycoupled to said system processor; a redundant storage array; and anadapter including a redundant storage array including a plurality ofstorage media containing data and related parity data, said adapterfurther including: an updating circuit for receiving a data request fordata stored by a selected storage medium among said plurality of storagemedia; and a request servicing circuit, in response to receiving saiddata request while an update to said selected storage medium is beingperformed, for servicing said data request by reference to said data andsaid related parity data of other storage media among said plurality ofstorage media.
 17. The data processing system according to claim 16,wherein said redundant storage array is a redundant array of inexpensivedisks (RAID).
 18. The data processing system according to claim 16,wherein said redundant storage array stores data in stripes, whereineach said stripe further includes data and related parity data.
 19. Thedata processing system according to claim 16, wherein said updatingcircuit is an adapter processor.
 20. The data processing systemaccording to claim 18, wherein said request servicing circuit is anexclusive-OR (XOR) processor for automatically reconstructing requesteddata utilizing said data said related parity data from other storagemedia during said updating, in response to a data request by said systemprocessor, said XOR processor coupled to said adapter processor.
 21. Thedata processing system according to claim 16, wherein said adapterfurther comprising: a non-volatile random access memory (NVRAM) forlogging all data write requests and data read-with-intent-to-writerequests.
 22. The data processing system according to claim 16, furtherincluding: a storage location for temporarily storing all write data forsaid selected storage media during said updating.
 23. The dataprocessing system according to claim 22, wherein said storage locationis a temporary space on other storage media of said redundant storagearray.
 24. The data processing system according to claim 22, whereinsaid storage location is an adapter cache.
 25. The data processingsystem according to claim 24, wherein said adapter further includes abattery backup circuit.
 26. A computer program product comprising: acomputer-readable medium; updating code encoded within saidcomputer-readable medium for receiving a data request for data stored bya selected storage medium among a plurality of storage media; andrequest servicing code encoded within said computer-readable medium, inresponse to receiving said data request while an update to said selectedstorage medium is being performed, for servicing said data request byreference to data and related parity data of other storage media amongsaid plurality of storage media.